@echo off
chcp 65001 >nul
:: del.bat - 删除指定目录下的所有文件夹
:: 需要删除的文件夹名称通过file.txt文件指定，每行一个文件夹名称

:: 设定源目录和file.txt的路径
set "source_dir=d:\Code\test\win-file-cmd\source_dir"
set "file_list=d:\Code\test\win-file-cmd\cmd\file.txt"

:: 检查源目录是否存在
if not exist "%source_dir%" (
    echo 错误：源目录不存在 - %source_dir%
    pause
    exit /b 1
)

:: 检查文件列表是否存在
if not exist "%file_list%" (
    echo 错误：文件列表不存在 - %file_list%
    pause
    exit /b 1
)

:: 显示警告信息并获取用户确认
echo ==============================================
echo 警告：此操作将永久删除以下文件夹及其所有内容！
echo 源目录：%source_dir%
echo ==============================================

type %file_list%

echo ==============================================
set /p confirm=请确认是否继续 (Y/N): 
if /i not "%confirm%"=="Y" (
    echo 用户取消操作
    pause
    exit /b 0
)

:: 循环读取文件列表中的每个文件夹名称
for /f "delims= tokens=*" %%a in (%file_list%) do (
    set "folder_name=%%a"
    setlocal enabledelayedexpansion
    
    :: 跳过空行
    if "!folder_name!"=="" goto continue
    
    :: 检查源目录中是否存在该文件夹
    if exist "%source_dir%\!folder_name!" (
        echo 正在删除：!folder_name!
        rmdir /s /q "%source_dir%\!folder_name!"
        if errorlevel 1 (
            echo 错误：删除!folder_name!失败
        ) else (
            echo 成功删除：!folder_name!
        )
    ) else (
        echo 警告：源目录中不存在文件夹 - !folder_name!
    )
    
    :continue
    endlocal
)

echo 删除操作已完成
pause